package com.blog.wl2023.controller.com;

import com.blog.wl2023.entity.MessageList;
import com.blog.wl2023.entity.TreasureChests;
import com.blog.wl2023.entity.response.PageResult;
import com.blog.wl2023.entity.response.Result;
import com.blog.wl2023.service.com.ComService;
import com.blog.wl2023.utils.note.ResponseResult;

import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author wule
 * @desc 公共控制层
 */
@RestController
@RequestMapping("api/com")
@ResponseResult
@Log4j2
public class ComController {

	@Autowired
	ComService  comService;


	/**
	 * 获取所有百宝箱数据,并且按照typeId进行分组排序
	 * @return TreasureChests数组
	 */
	@GetMapping("getTreasureChests")
	public Result getTreasureChests(){
		return comService.getTreasureChests();
	}

	/**
	 * 添加友链
	 * @param treasureChests 友链参数
	 * @return Result.ok()
	 */
	@PostMapping("postNewFriendLink")
	public Result postNewFriendLink(@RequestBody TreasureChests treasureChests){
		return comService.postNewFriendLink(treasureChests);
	}

	/**
	 * 获取所有标题,作为搜索集合
	 * @return 集合
	 */
	@GetMapping("getAllTitles")
	public Result getAllTitles() {
		return comService.getAllTitles();
	}

	/**
	 * 根据页面尺码,标题检索,类型分类检索文章集合
	 * @param pageNo 当前页面
	 * @param pageSize 页面尺寸
	 * @param title 模糊检索标题
	 * @param typeId 类型
	 * @return 文章集合
	 */
	@GetMapping("getArticles/{pageNo}/{pageSize}")
	public PageResult getArticles(@PathVariable int pageNo, @PathVariable int pageSize, @RequestParam String title, @RequestParam String typeId) {
		log.info("当前页码:{},页面尺寸:{},模糊标题搜索参数:{},查找类型:{}",pageNo,pageSize,title,typeId);
		return comService.getArticles(pageNo,pageSize,title,typeId);
	}

	/**
	 * 首页找出置顶的三个文章
	 * @return 文章集合
	 */
	@GetMapping("getTopArticles")
	public PageResult getTopArticles() {
		return comService.getTopArticle();
	}

	/**
	 * 找出所有随想 (按照创建时间排序倒叙)
	 * @return 集合
	 */
	@GetMapping("getCaprice/{pageNo}/{pageSize}")
	public PageResult getCaprice(@PathVariable int pageNo, @PathVariable int pageSize) {
		return comService.getCaprice(pageNo,pageSize);
	}

	/**
	 * 获取所有留言
	 * @return 留言列表
	 */
	@GetMapping("getMessageList")
	public Result getMessageList() {
		return comService.getMessageList();
	}

	/**
	 * 新增留言列表
	 * @return ok
	 */
	@PostMapping("postNewMessageList")
	public Result postNewMessageList(@RequestBody MessageList messageList) {
		log.info("新增留言列表:{}",messageList);
		return comService.postNewMessageList(messageList);
	}

	/**
	 * 查询某文章的所有评论,并进行逻辑处理
	 *    首先根据uuid查出所有pid为0且isDelete为0的评论(父评论)
	 *    查出所有uuid且pid不等于0的评论,然后和上面的进行拼接
	 * @param articleUUId 文章id
	 * @return 评论集合
	 */
	@GetMapping("getArticleComment/{pageNo}/{pageSize}")
	public PageResult getArticleComment(@PathVariable("pageNo") int pageNo,@PathVariable("pageSize") int pageSize, @RequestParam("articleUUId") String articleUUId){
		return comService.getArticleComment(pageNo,pageSize,articleUUId);
	}

	/**
	 *  归档加分页(图片,创建日期,标题)
	 * @param pageNo 页码
	 * @param pageSize 页面尺寸
	 * @return 分页返回结果集
	 */
	@GetMapping("getPigeonhole/{pageNo}/{pageSize}")
	public PageResult getPigeonhole(@PathVariable int pageNo,@PathVariable int pageSize){
		return comService.getPigeonhole(pageNo,pageSize);
	}

	/**
	 * 获取关于页面文章的信息
	 * @return 返回关于页面文章的信息
	 */
	@GetMapping("getAbout")
	public Result getAbout() {
		return comService.getAbout();
	}

	/**
	 * 根据typeInfo获取相应的所有类型集合   0:文章类型 1:百宝箱类型
	 * @return 返回类型集合
	 */
	@GetMapping("getType")
	public Result getType() {
		return comService.getType();
	}

	/**
	 * 每访问一次接口就将访问量加一 根据uuid查出文章的信息,再将article中的views加一个
	 * @param uuid 主键
	 * @return 文章信息
	 */
	@GetMapping("getArticle/{uuid}")
	public Result getArticle(@PathVariable("uuid") String uuid) {
		return comService.getArticle(uuid);
	}


	/**
	 * 获取当前正在显示的公告的信息 status 的 1:显示  0:不显示
	 * @return Result
	 */
	@GetMapping("getAnnouncementIsShow")
	public Result getAnnouncementIsShow() {
		return comService.getAnnouncementIsShow();
	}

}
